cmake_minimum_required(VERSION 3.16)
project(SudokuGame VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找 Qt6 组件
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Gui)

# 使用 Qt6 的标准项目设置
qt_standard_project_setup()

# 添加可执行文件
qt_add_executable(SudokuGame
    src/main.cpp
    src/MainWindow.cpp
    src/SudokuBoard.cpp
    src/SudokuCell.cpp
    src/GameManager.cpp
    src/LevelManager.cpp
)

# 使用关键字参数链接库
target_link_libraries(SudokuGame 
    PRIVATE 
        Qt6::Core 
        Qt6::Widgets 
        Qt6::Gui
)

# 在 Debug 模式下启用调试输出
target_compile_definitions(SudokuGame 
    PRIVATE 
        $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_DEBUG>
)

# 在 Release 模式下禁用调试输出
if(CMAKE_BUILD_TYPE STREQUAL "Release")
    target_compile_definitions(SudokuGame PRIVATE QT_NO_DEBUG_OUTPUT)
endif()

# 设置可执行文件的属性
set_target_properties(SudokuGame PROPERTIES
    WIN32_EXECUTABLE TRUE
    MACOSX_BUNDLE FALSE
)

# 安装配置
if(WIN32)
    # Windows 安装配置
    install(TARGETS SudokuGame
        RUNTIME DESTINATION .
        BUNDLE DESTINATION .
    )
    
    # 复制 Qt DLL 文件（在 Windows 上需要）
    if(CMAKE_BUILD_TYPE STREQUAL "Release")
        qt_generate_deploy_app_script(
            TARGET SudokuGame
            OUTPUT_SCRIPT deploy_script
            NO_TRANSLATIONS
        )
    endif()
    
elseif(UNIX AND NOT APPLE)
    # Linux 安装配置
    install(TARGETS SudokuGame
        RUNTIME DESTINATION bin
    )
endif()